Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data in most areas of business, science, education and entertainment. Electronic systems providing these advantageous results often include systems that are started by a boot process. Properly booting up a system is often critical to proper system functionality. While the boot process is very important it can take some time to complete and other productive work is delayed.
The boot process typically causes a computer system to start executing instructions in a bootstrap loader program (e.g., a short machine language program). For example, personal computers often include boot instructions in a nonvolatile memory, such as a read only memory (ROM), that are automatically executed upon startup. A boot process is usually started by an indication the power is turned on for a computer system, a reset switch is pressed and/or a software restart instructions are executed. The bootstrap instructions typically include instructions for directing some hardware tests and initializations. The boot instructions also typically search for the location of the operating system instructions, load the operating system instructions and pass control to the operating system.
One of the first boot instructions usually executed are basic input/output system (BIOS) instructions. The BIOS software can usually direct the performance of a number of different functions. The BIOS is typically machine code that allows a processing unit to perform tasks such as initialization, diagnostics, loading the operating system Kernel from mass storage and routine input/output (“I/O”) functions. Upon a bootstrap trigger event (e.g., power up), a processor typically boots up by fetching instruction code residing in the BIOS storage locations. The BIOS start up also usually involves performing a power on self-test (POST) for the various components included in the computer system to ensure everything is operating correctly. In addition to ensuring the individual components operate correctly the BIOS can make sure other chips, hard drives, ports and CPU function together. In some systems the BIOS also activates other BIOS chips on different cards installed in the computer system. For example, SCSI and graphics cards often have their own BIOS chips.
Traditionally systems execute instructions in polling mode during initialization. For example, systems typically initialize bus controllers and memories in a polling mode. As part of a typical computer system initialization, a processor attempts to retrieve serial presence detect data (SPD). However, the processor typically waits through numerous polling cycles for the information to be available.
As systems become more complex, bootstrap activities can become very involved and take longer to complete. In addition, applications are becoming more sophisticated and many modern systems and applications have boot up timing requirements that are getting shorter. Traditional boot up approaches often have difficulty meeting these timing requirements.